import JSZip from 'jszip'

/**
 * 下载文本内容为指定文件名的文件。
 *
 * 该函数通过创建一个隐藏的<a>元素，并将其属性设置为下载内容的Blob URL，从而实现文件的下载。
 * 这种方法允许在不需要服务器参与的情况下，直接从客户端生成和下载文件。
 *
 * @param content 要下载的文本内容。
 * @param fileName 下载后的文件名。
 */
export const download = (content: string, fileName: string) => {
	// 创建一个<a>元素，用于触发下载。
	const a = document.createElement('a')
	// 创建一个包含下载内容的Blob对象。
	const blob = new Blob([content])
	// 设置<a>元素的下载属性为指定的文件名。
	a.download = fileName
	// 将Blob对象转换为URL，并设置为<a>元素的href属性，从而指定下载的来源。
	a.href = URL.createObjectURL(blob)
	// 模拟点击<a>元素，触发下载。
	a.click()
	// 下载完成后，移除<a>元素，避免对页面造成影响。
	// document.body.removeChild(a)
	// 释放Blob URL，避免内存泄漏。
	URL.revokeObjectURL(a.href)
}

/**
 * 文件列表转zip包并下载
 * @param files
 * @param zipName
 */
export const filesToZip = (files: Array<any>, zipName: string) => {
	const zip = new JSZip()
	files.forEach((file: any) => {
		debugger
		zip.file(file.path || file.name, file.vueModel)
	})
	zip.generateAsync({ type: 'blob' }).then((blob: any) => {
		download(blob, zipName)
	})
}
